home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 14 / CU Amiga Magazine's Super CD-ROM 14 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-09].iso / CUCD / Programming / GMS / Utils / IceBreaker / Source / IceAssembler.asm next >
Encoding:
Assembly Source File  |  1997-04-26  |  35.4 KB  |  1,309 lines

  1. ;IceBreaker Assembler Source
  2. ;---------------------------
  3. ;Link this file with IceBreaker.c.
  4. ;CASE sensitivity ON.
  5.  
  6.     INCDIR    "INCLUDES:"
  7.     INCLUDE    "exec/exec_lib.i"
  8.     INCLUDE    "dos/dos_lib.i"
  9.     INCLUDE    "libs/graphics_lib.i"
  10.     INCLUDE    "games/games_lib.i"
  11.     INCLUDE    "games/games.i"
  12.     INCLUDE    "games/debug.i"
  13.     INCLUDE    "games/gamesbase.i"
  14.     INCLUDE    "games/tasks.i"
  15.  
  16.     ;The following values are defined by us so that the C source can
  17.     ;access them.
  18.  
  19.     xdef    _libDebugMessage
  20.     xdef    _libErrorMessage
  21.     xdef    _libStepBack
  22.     xdef    _DebugList
  23.     xdef    _GFXBase
  24.  
  25.     ;The following values are defined in the C source.
  26.  
  27.     xref    _DOSBase
  28.     xref    _GMSBase
  29.     xref    _SysBase
  30.     xref    _conhandle
  31.  
  32.     SECTION    IceAssembler,CODE    ;SECTION __MERGED,CODE
  33.  
  34. CALL    MACRO
  35.     jsr    _LVO\1(a6)
  36.     ENDM
  37.  
  38. TEXT    MACRO        ;Simple macro for nice looking source.
  39.     IFNE    '\1',''
  40.     dc.b    \1
  41.     ENDC
  42.     IFNE    '\2',''
  43.     dc.b    \2
  44.     ENDC
  45.     IFNE    '\3',''
  46.     dc.b    \3
  47.     ENDC
  48.     even
  49.     ENDM
  50.  
  51. WText    MACRO        ;Simple macro for nice looking source.
  52.     dc.b    \1,0
  53.     even
  54.     ENDM
  55.  
  56. ;===================================================================================;
  57. ;                             INTERCEPT DEBUG MESSAGE
  58. ;===================================================================================;
  59. ;Function: Receives a debug message, copies it to the buffer and then sends a
  60. ;       message to our main task, which tells it new data has appeared in the
  61. ;       buffer.  This function needs to be very very fast.
  62. ;
  63. ;Requires: d7 = Debug type in low word, flags in high word.
  64. ;       a5 = Message string if type of Error/Formatted/Message.
  65. ;Returns:  Nothing.
  66.  
  67. _libDebugMessage:
  68.     cmp.w    #DBG_END,d7    ;d7 = If (Type < 0) or (Type > DBG_End-1)
  69.     bcc.s    .exit    ;>> = No, it's safe.
  70.     tst.w    gb_BlitterUsed(a6)    ;a6 = Blitter allocated?
  71.     beq.s    .debug    ;>> = No, safe.
  72.     MOVEM.L    D0-D7/A0-A6,-(SP)
  73.     move.l    _GFXBase(pc),a6    ;a6 = Graphics base.
  74.     CALL    DisownBlitter    ;>> = Disown the blitter.
  75.     CALL    WaitBlit
  76.     bsr.s    .debug    ;>> = Now we can send the messaage.
  77.     move.l    _GFXBase(pc),a6    ;a6 = Graphics base.
  78.     CALL    OwnBlitter
  79.     CALL    WaitBlit
  80.     MOVEM.L    (SP)+,D0-D7/A0-A6
  81. .exit    rts
  82.  
  83. .debug    MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  84.     move.l    _SysBase,a6    ;a6 = Exec Base.
  85.     CALL    Forbid    ;>> = Halt all tasks for a moment.
  86.  
  87.     move.l    d7,d6    ;d6 = Save flags.
  88.     and.l    #$0000ffff,d7    ;d7 = Get rid of special flags.
  89.     bsr    Stepper    ;>> = Function stepper (print step).
  90.     lea    _DebugList(pc),a6    ;a6 = Pointer to debug list.
  91.     mulu    #DL_SIZEOF,d7    ;d7 = (Type)*DL_SIZEOF
  92.     move.l    DL_Print(a6,d7.l),a6    ;a6 = Printer for this type.
  93.     jsr    (a6)    ;>> = Go to the printer.
  94.     bsr    NewLine    ;>> = Write new line.
  95.  
  96.     and.l    #STEP,d6    ;d6 = Step necessary?
  97.     beq.s    .done    ;>> = Nope.
  98.     move.l    _GMSBase,a6    ;a6 = GMSBase.
  99.     CALL    FindGMSTask    ;>> = Find this task.
  100.     tst.l    d0    ;d0 = Check if the node exists.
  101.     beq.s    .done    ;>> = No.
  102.     move.l    d0,a0    ;a0 = Pointer to GMS task node.
  103.     addq.w    #1,GT_DebugStep(a0)    ;a0 = (DebugStep)+1
  104.  
  105. .done    move.l    _SysBase,a6    ;a6 = Exec Base.
  106.     CALL    Permit    ;>> = Give back multi-tasking.
  107.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  108.     rts
  109.  
  110. ;===================================================================================;
  111. ;                             INTERCEPT ERROR MESSAGE
  112. ;===================================================================================;
  113. ;Function: Receives an error number and prints it out.
  114. ;Requires: d0.l = Error code.
  115. ;Returns:  Nothing.
  116.  
  117. _libErrorMessage:
  118.     cmp.l    #ERR_END,d0    ;d0 = If (Code < 0) or (Code > ERR_END-1).
  119.     bcc.s    .exit    ;>> = Error/Unrecognised.
  120.     tst.w    gb_BlitterUsed(a6)    ;Has the blitter been grabbed and not
  121.     beq.s    .message    ;returned?  If so we better free it before
  122.     MOVEM.L    D0-D7/A0-A6,-(SP)    ;SP = Save used registers.
  123.     move.l    _GFXBase,a6    ;a6 = Graphics base.
  124.     CALL    DisownBlitter    ;>> = Disown the blitter.
  125.     bsr.s    .message    ;>> = Print message.
  126.     move.l    _GFXBase,a6    ;a6 = Graphics base.
  127.     CALL    OwnBlitter    ;>> = Get back blitter.
  128.     MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  129. .exit    rts
  130.  
  131. .message
  132.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  133.     move.l    _SysBase,a6    ;a6 = Exec Base.
  134.     CALL    Forbid    ;>> = Halt all tasks for a moment.
  135.     bsr    Stepper    ;>> = Function stepper.
  136.     lea    TXT_ErrorCode(pc),a0    ;a0 = "ErrorCode:"
  137.     bsr    WriteBold    ;>> = Write it out.
  138.     lea    ErrorList(pc),a0    ;a0 = Pointer to debug list.
  139.     add.l    d0,d0    ;d0 = *2
  140.     add.l    d0,d0    ;d0 = *4
  141.     move.l    (a0,d0.l),a0    ;a0 = Text for this type.
  142.     bsr    WText    ;>> = Write it out.
  143.     bsr    NewLine    ;>> = Write new line.
  144.     move.l    _SysBase,a6    ;a6 = Exec Base.
  145.     CALL    Permit    ;>> = Give back multi-tasking.
  146.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  147.     rts
  148.  
  149. ;===================================================================================;
  150. ;                           STEP BACK AN ENTRY
  151. ;===================================================================================;
  152. ;Function: Used to step back an entry after STEP has been specified.
  153. ;Requires: Nothing.
  154. ;Returns:  Nothing.
  155.  
  156. _libStepBack:
  157.     MOVEM.L    A0/D0,-(SP)    ;SP = Save used registers.
  158.     CALL    FindGMSTask    ;>> = Find this task.
  159.     tst.l    d0
  160.     beq.s    .done
  161.     move.l    d0,a0    ;a0 = Task node pointer.
  162.     subq.w    #1,GT_DebugStep(a0)    ;a0 = (DebugStep)-1
  163. .done    MOVEM.L    (SP)+,A0/D0    ;SP = Return used registers.
  164.     rts
  165.  
  166. ;===================================================================================;
  167. ;                                PRINTING FUNCTIONS
  168. ;===================================================================================;
  169.  
  170. PRINT_Error:
  171.     lea    TXT_Error(pc),a0
  172.     bsr    WriteBold
  173.     move.l    a5,a0    ;a0 = Message
  174.     bsr    WText    ;>> = Write it out.
  175.     rts
  176.  
  177. PRINT_Formatted:
  178.     lea    TXT_Formatted(pc),a0
  179.     bsr    WriteBold
  180.     move.l    a5,a0    ;a0 = Message
  181.     bsr    WText    ;>> = Write it out.
  182.     rts
  183.  
  184. PRINT_Message:
  185.     lea    TXT_Message(pc),a0
  186.     bsr    WriteBold
  187.     move.l    a5,a0    ;a0 = Message
  188.     bsr    WText    ;>> = Write it out.
  189.     rts
  190.  
  191. ;-----------------------------------------------------------------------------------;
  192. ;                             MISCELLANEOUS FUNCTIONS
  193. ;-----------------------------------------------------------------------------------;
  194.  
  195. PRINT_AddInputHandler:
  196.     lea    TXT_AddInputHandler(pc),a0
  197.     bsr    WriteFirst
  198.     rts
  199.  
  200. PRINT_RemInputHandler:
  201.     lea    TXT_RemInputHandler(pc),a0
  202.     bsr    WriteFirst
  203.     rts
  204.  
  205. PRINT_Switch:
  206.     lea    TXT_Switch(pc),a0
  207.     bsr    WriteFirst
  208.     rts
  209.  
  210. PRINT_FindGMSTask:
  211.     lea    TXT_FindGMSTask(pc),a0
  212.     bsr    WriteFirst
  213.     rts
  214.  
  215. PRINT_AllocAudio:
  216.     lea    TXT_AllocAudio(pc),a0
  217.     bsr    WriteFirst
  218.     rts
  219.  
  220. PRINT_FreeAudio:
  221.     lea    TXT_FreeAudio(pc),a0
  222.     bsr    WriteFirst
  223.     rts
  224.  
  225. PRINT_GMSOpened:
  226.     lea    TXT_GMSOpened(pc),a0
  227.     bsr    WriteWhite
  228.     rts
  229.  
  230. PRINT_GMSClosed:
  231.     lea    TXT_GMSClosed(pc),a0
  232.     bsr    WriteWhite
  233.     rts
  234.  
  235. PRINT_AddInterrupt:
  236.     lea    TXT_AddInterrupt(pc),a0
  237.     bsr    WriteFirst
  238.     rts
  239.  
  240. PRINT_RemInterrupt:
  241.     lea    TXT_RemInterrupt(pc),a0
  242.     bsr    WriteFirst
  243.     rts
  244.  
  245. PRINT_RemoveGPI:
  246.     lea    TXT_RemoveGPI(pc),a0
  247.     bsr    WriteFirst
  248.     rts
  249.  
  250. PRINT_InitGPI:
  251.     lea    TXT_InitGPI(pc),a0
  252.     bsr    WriteFirst
  253.     rts
  254.  
  255. PRINT_SmartUnpack:
  256.     lea    TXT_SmartUnpack(pc),a0
  257.     bsr    WriteFirst
  258.     rts
  259.  
  260. PRINT_SetUserPrefs:
  261.     move.l    a0,a1
  262.     lea    TXT_SetUserPrefs(pc),a0
  263.     bsr    WriteFirst
  264.     lea    TXT_Name(pc),a0    ;a0 = "Name: "
  265.     bsr    WriteText
  266.     cmp.l    #$00,a1    ;a1 = Name given?
  267.     beq.s    .unspecified
  268.     move.l    a1,a0
  269.     bra    WriteText
  270. .unspecified
  271.     lea    TXT_Unspecified(pc),a0
  272.     bra    WriteText
  273.  
  274. PRINT_InitCards:
  275.     lea    TXT_InitCards(pc),a0
  276.     bra    WriteFirst
  277.  
  278. PRINT_FreeCards:
  279.     lea    TXT_FreeCards(pc),a0
  280.     bra    WriteFirst
  281.  
  282. PRINT_GetCardInfo:
  283.     lea    TXT_GetCardInfo(pc),a0
  284.     bra    WriteFirst
  285.  
  286. PRINT_SelfDestruct:
  287.     lea    TXT_SelfDestruct(pc),a0
  288.     bra    WriteFirst
  289.  
  290. PRINT_Armageddon:
  291.     lea    TXT_Armageddon(pc),a0
  292.     bra    WriteFirst
  293.  
  294. PRINT_FingerOfDeath:
  295.     lea    TXT_FingerOfDeath(pc),a0
  296.     bra    WriteFirst
  297.  
  298. PRINT_InitDestruct:
  299.     lea    TXT_InitDestruct(pc),a0
  300.     bra    WriteFirst
  301.  
  302. PRINT_Awaken:
  303.     lea    TXT_Awaken(pc),a0
  304.     bsr    WriteFirst
  305.     lea    TXT_Task(pc),a0
  306.     bsr    WriteText
  307.     move.l    a1,d0
  308.     bra    WriteHex
  309.  
  310. ;-----------------------------------------------------------------------------------;
  311. ;                                 SOUND FUNCTIONS
  312. ;-----------------------------------------------------------------------------------;
  313.  
  314. PRINT_InitSound:
  315.     move.l    a0,d0
  316.     lea    TXT_InitSound(pc),a0
  317.     bsr    WriteFirst
  318.     lea    TXT_SoundAddr(pc),a0
  319.     bsr    WriteText
  320.     bra    WriteHex
  321.  
  322. PRINT_FreeSound:
  323.     move.l    a0,d0
  324.     lea    TXT_FreeSound(pc),a0
  325.     bsr    WriteFirst
  326.     lea    TXT_SoundAddr(pc),a0
  327.     bsr    WriteText
  328.     bra    WriteHex
  329.  
  330. ;-----------------------------------------------------------------------------------;
  331. ;                                BLITTER FUNCTIONS
  332. ;-----------------------------------------------------------------------------------;
  333.  
  334. PRINT_AllocBlitter:
  335.     lea    TXT_AllocBlitter(pc),a0
  336.     bra    WriteFirst
  337.  
  338. PRINT_FreeBlitter:
  339.     lea    TXT_FreeBlitter(pc),a0
  340.     bra    WriteFirst
  341.  
  342. PRINT_InitBob:
  343.     move.l    a0,d0
  344.     lea    TXT_InitBob(pc),a0    ;a0 = "InitBob()"
  345.     bsr    WriteFirst
  346.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  347.     bsr    WriteText
  348.     bsr    WriteHex
  349.     lea    TXT_BobAddr(pc),a0    ;a0 = "Bob: $"
  350.     bsr    WriteText
  351.     move.l    a1,d0    ;d0 = Bob Address.
  352.     bra    WriteHex
  353.  
  354. PRINT_FreeBob:
  355.     lea    TXT_FreeBob(pc),a0    ;a0 = "FreeBob()"
  356.     bsr    WriteFirst
  357.     lea    TXT_BobAddr(pc),a0    ;a0 = "Bob: $"
  358.     bsr    WriteText
  359.     move.l    a1,d0    ;d0 = Bob Address.
  360.     bra    WriteHex
  361.  
  362. PRINT_InitMap:
  363.     lea    TXT_InitMap(pc),a0
  364.     bsr    WriteFirst
  365.     rts
  366.  
  367. PRINT_FreeMap:
  368.     lea    TXT_FreeMap(pc),a0
  369.     bsr    WriteFirst
  370.     rts
  371.  
  372. ;-----------------------------------------------------------------------------------;
  373. ;                              RESTORELIST FUNCTIONS
  374. ;-----------------------------------------------------------------------------------;
  375.  
  376. PRINT_InitRestore:
  377.     lea    TXT_InitRestore(pc),a0
  378.     bsr    WriteFirst
  379.     lea    TXT_AmtBuffers(pc),a0    ;a0 = "AmtBuffers: "
  380.     bsr    WriteText    ;>> = Write.
  381.     bsr    WriteDec    ;>> = Write out amount of buffers in d0.
  382.     lea    TXT_AmtEntries(pc),a0    ;a0 = ", AmtEntries: "
  383.     bsr    WriteText    ;>> = Write text.
  384.     move.l    d1,d0    ;d0 = Amount Entries.
  385.     bra    WriteDec    ;>> = Write out amount of entries.
  386.  
  387. PRINT_ResetRestore:
  388.     lea    TXT_ResetRestore(pc),a0
  389.     bsr    WriteFirst
  390.     lea    TXT_RestoreAddr(pc),a0    ;a0 = "Restorelist: $"
  391.     bsr    WriteText    ;>> = Write.
  392.     move.l    a1,d0    ;d0 = Pointer to restorelist.
  393.     bra    WriteHex    ;>> = Write.
  394.  
  395. PRINT_FreeRestore:
  396.     lea    TXT_FreeRestore(pc),a0
  397.     bsr    WriteFirst
  398.     lea    TXT_RestoreAddr(pc),a0    ;a0 = "Restorelist: $"
  399.     bsr    WriteText    ;>> = Write.
  400.     bra    WriteHex    ;>> = Write out address in d0.
  401.  
  402. ;-----------------------------------------------------------------------------------;
  403. ;                               PICTURE MANIPULATION
  404. ;-----------------------------------------------------------------------------------;
  405.  
  406. PRINT_LoadPic:
  407.     lea    TXT_LoadPic(pc),a0
  408.     bsr    WriteFirst
  409.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  410.     bsr.s    WriteText    ;>> = Write.
  411.     move.l    a1,d0    ;d0 = Address of picture.
  412.     bra    WriteHex    ;>> = Write.
  413.  
  414. PRINT_FreePic:
  415.     lea    TXT_FreePic(pc),a0
  416.     bsr    WriteFirst
  417.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  418.     bsr.s    WriteText    ;>> = Write.
  419.     move.l    a1,d0    ;d0 = Address of picture.
  420.     bra    WriteHex    ;>> = Write.
  421.  
  422. PRINT_GetPicInfo:
  423.     lea    TXT_GetPicInfo(pc),a0
  424.     bsr    WriteFirst
  425.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  426.     bsr.s    WriteText    ;>> = Write.
  427.     move.l    a1,d0    ;d0 = Address of picture.
  428.     bra    WriteHex    ;>> = Write.
  429.  
  430. PRINT_UnpackPic:
  431.     lea    TXT_UnpackPic(pc),a0
  432.     bsr    WriteFirst
  433.     lea    TXT_PictureAddr(pc),a0    ;a0 = "Picture: $"
  434.     bsr.s    WriteText    ;>> = Write.
  435.     move.l    a1,d0    ;d0 = Address of picture.
  436.     bra    WriteHex    ;>> = Write.
  437.  
  438. ;-----------------------------------------------------------------------------------;
  439. ;                                 SCREEN HANDLING
  440. ;-----------------------------------------------------------------------------------;
  441.  
  442. PRINT_ShowScreen:
  443.     move.l    a0,a1    ;a1 = Save GameScreen
  444.     lea    TXT_ShowScreen(pc),a0
  445.     bsr    WriteFirst
  446.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  447.     bsr    WriteText    ;>> = Write it out.
  448.     move.l    a1,d0    ;d0 = Adddress of screen.
  449.     bra    WriteHex    ;>> = Write it out.
  450.  
  451. PRINT_DeleteScreen:
  452.     move.l    a0,a1    ;a1 = Save GameScreen
  453.     lea    TXT_DeleteScreen(pc),a0
  454.     bsr    WriteFirst
  455.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  456.     bsr    WriteText    ;>> = Write it out.
  457.     move.l    a1,d0    ;d0 = Adddress of screen.
  458.     bra    WriteHex    ;>> = Write it out.
  459.  
  460. PRINT_AddScreen:
  461.     move.l    a0,a1    ;a1 = Save GameScreen
  462.     lea    TXT_AddScreen(pc),a0
  463.     bsr    WriteFirst
  464.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  465.     bsr    WriteText    ;>> = Write it out.
  466.     move.l    a1,d0    ;d0 = Adddress of screen.
  467.     bra    WriteHex    ;>> = Write it out.
  468.  
  469. PRINT_HideScreen:
  470.     move.l    a0,a1
  471.     lea    TXT_HideScreen(pc),a0
  472.     bsr    WriteFirst
  473.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  474.     bsr    WriteText    ;>> = Write it out.
  475.     move.l    a1,d0    ;d0 = Adddress of screen.
  476.     bra    WriteHex    ;>> = Write it out.
  477.  
  478. PRINT_MoveToBack:
  479.     move.l    a0,a1
  480.     lea    TXT_MoveToBack(pc),a0
  481.     bsr    WriteFirst
  482.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  483.     bsr    WriteText
  484.     move.l    a1,d0
  485.     bra    WriteHex
  486.  
  487. PRINT_MoveToFront:
  488.     move.l    a0,a1
  489.     lea    TXT_MoveToFront(pc),a0
  490.     bsr    WriteFirst
  491.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  492.     bsr    WriteText
  493.     move.l    a1,d0
  494.     bra    WriteHex
  495.  
  496. PRINT_TakeDisplay:
  497.     move.l    a0,a1
  498.     lea    TXT_TakeDisplay(pc),a0
  499.     bsr    WriteFirst
  500.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  501.     bsr    WriteText
  502.     move.l    a1,d0
  503.     bra    WriteHex
  504.  
  505. PRINT_ReturnDisplay:
  506.     move.l    a0,a1
  507.     lea    TXT_ReturnDisplay(pc),a0
  508.     bra    WriteFirst
  509.  
  510. PRINT_BlankOn:
  511.     lea    TXT_BlankOn(pc),a0
  512.     bra    WriteFirst
  513.  
  514. PRINT_BlankOff:
  515.     lea    TXT_BlankOff(pc),a0
  516.     bra    WriteFirst
  517.  
  518. ;-----------------------------------------------------------------------------------;
  519. ;                                   RASTERLISTS
  520. ;-----------------------------------------------------------------------------------;
  521.  
  522. PRINT_InitRasterlist:
  523.     move.l    a0,a1    ;a1 = Save GameScreen.
  524.     lea    TXT_InitRasterlist(pc),a0
  525.     bsr    WriteFirst
  526.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  527.     bsr    WriteText    ;>> = Write.
  528.     move.l    a1,d0    ;d0 = Address of screen.
  529.     bsr    WriteHex    ;>> = Write.
  530.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  531.     bsr    WriteText    ;>> = Write.
  532.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  533.     bra    WriteHex    ;>> = Write.
  534.  
  535. PRINT_HideRasterlist:
  536.     move.l    a0,a1    ;a1 = Save GameScreen.
  537.     lea    TXT_HideRasterlist(pc),a0
  538.     bsr    WriteFirst
  539.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  540.     bsr    WriteText    ;>> = Write.
  541.     move.l    a1,d0    ;d0 = Address of screen.
  542.     bsr    WriteHex    ;>> = Write.
  543.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  544.     bsr    WriteText    ;>> = Write.
  545.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  546.     bra    WriteHex    ;>> = Write.
  547.  
  548. PRINT_ShowRasterlist:
  549.     move.l    a0,a1    ;a1 = Save GameScreen.
  550.     lea    TXT_ShowRasterlist(pc),a0
  551.     bsr    WriteFirst
  552.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  553.     bsr    WriteText    ;>> = Write.
  554.     move.l    a1,d0    ;d0 = Address of screen.
  555.     bsr    WriteHex    ;>> = Write.
  556.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  557.     bsr    WriteText    ;>> = Write.
  558.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  559.     bra    WriteHex    ;>> = Write.
  560.  
  561. PRINT_RemoveRasterlist:
  562.     move.l    a0,a1    ;a1 = Save GameScreen.
  563.     lea    TXT_RemoveRasterlist(pc),a0
  564.     bsr    WriteFirst
  565.     lea    TXT_ScreenAddr(pc),a0    ;a0 = "GameScreen: $"
  566.     bsr    WriteText    ;>> = Write.
  567.     move.l    a1,d0    ;d0 = Address of screen.
  568.     bsr    WriteHex    ;>> = Write.
  569.     lea    TXT_RasterAddr(pc),a0    ;a0 = "Rasterlist: $"
  570.     bsr    WriteText    ;>> = Write.
  571.     move.l    GS_Rasterlist(a1),d0    ;d0 = Address of rasterlist.
  572.     bra    WriteHex    ;>> = Write.
  573.  
  574. ;-----------------------------------------------------------------------------------;
  575. ;                                OBJECT FUNCTIONS
  576. ;-----------------------------------------------------------------------------------;
  577.  
  578. PRINT_GetObject:
  579.     lea    TXT_GetObject(pc),a0
  580.     bsr    WriteFirst
  581.     rts
  582.  
  583. PRINT_GetObjectList:
  584.     lea    TXT_GetObjectList(pc),a0
  585.     bsr    WriteFirst
  586.     rts
  587.  
  588. PRINT_LoadObjectFile:
  589.     lea    TXT_LoadObjectFile(pc),a0
  590.     bsr    WriteFirst
  591.     rts
  592.  
  593. PRINT_FreeObjectFile:
  594.     lea    TXT_FreeObjectFile(pc),a0
  595.     bsr    WriteFirst
  596.     rts
  597.  
  598. ;-----------------------------------------------------------------------------------;
  599. ;                                MEMORY FUNCTIONS
  600. ;-----------------------------------------------------------------------------------;
  601.  
  602. PRINT_AllocBlitMem:
  603.     lea    TXT_AllocBlitMem(pc),a0
  604.     bsr    WriteFirst
  605.     bsr.s    Alloc
  606.     lea    TXT_MemBlit(pc),a0
  607.     bra    WriteText
  608.  
  609. PRINT_AllocVideoMem:
  610.     lea    TXT_AllocVideoMem(pc),a0
  611.     bsr    WriteFirst
  612.     bsr.s    Alloc
  613.     lea    TXT_MemVideo(pc),a0
  614.     bra    WriteText
  615.  
  616. PRINT_AllocSoundMem:
  617.     lea    TXT_AllocSoundMem(pc),a0
  618.     bsr    WriteFirst
  619.     bsr.s    Alloc
  620.     lea    TXT_MemSound(pc),a0
  621.     bra    WriteText
  622.  
  623. PRINT_AllocMemBlock:
  624.     lea    TXT_AllocMemBlock(pc),a0
  625.     bsr    WriteFirst
  626.     bsr.s    Alloc
  627.     lea    TXT_MemData(pc),a0
  628.     bra    WriteText
  629.  
  630. PRINT_FreeMemBlock:
  631.     lea    TXT_FreeMemBlock(pc),a0
  632.     bsr    WriteFirst
  633.     lea    TXT_Address(pc),a0    ;a0 = "Address: $"
  634.     bsr    WriteText    ;>> = Write it out.
  635.     bsr    WriteHex    ;>> = Write out address in d0.
  636.     lea    TXT_Size(pc),a0    ;a0 = "Size : "
  637.     bsr    WriteText    ;>> = Write it out.
  638.     move.l    d0,a0    ;d0 = Address of memory block.
  639.     move.l    -12(a0),d0    ;d0 = Size of block.
  640.     bra    WriteDec    ;>> = Write it out.
  641.  
  642. Alloc:    lea    TXT_Size(pc),a0    ;a0 = "Size: "
  643.     bsr    WriteText    ;>> = Write text.
  644.     bra    WriteDec    ;>> = Write out size in d0.
  645.  
  646. ;-----------------------------------------------------------------------------------;
  647. ;                             STRUCTURE MANIPULATION
  648. ;-----------------------------------------------------------------------------------;
  649.  
  650. PRINT_GetBob:
  651.     lea    TXT_GetBob(pc),a0
  652.     bra    WriteFirst
  653.  
  654. PRINT_GetPicture:
  655.     lea    TXT_GetPicture(pc),a0
  656.     bra    WriteFirst
  657.  
  658. PRINT_GetScreen:
  659.     lea    TXT_GetScreen(pc),a0
  660.     bra    WriteFirst
  661.  
  662. PRINT_GetMBob:
  663.     lea    TXT_GetMBob(pc),a0
  664.     bra    WriteFirst
  665.  
  666. PRINT_GetSound:
  667.     lea    TXT_GetSound(pc),a0
  668.     bra    WriteFirst
  669.  
  670. PRINT_GetStructure:
  671.     lea    TXT_GetStructure(pc),a0
  672.     bsr    WriteFirst
  673.     lea    TXT_ID(pc),a0    ;a0 = "ID: "
  674.     bsr.s    WriteText    ;>> = Write.
  675.  
  676.     swap    d0    ;d0 = "IDTG" or "XXID"
  677.     cmp.w    #"TG",d0    ;d0 = Is it a specified taglist?
  678.     bne.s    .chkBob    ;>> = No, must be of type XXID.
  679.     swap    d0    ;d0 = "TGID"
  680.  
  681. .chkBob    cmp.w    #ID_BOB,d0
  682.     bne.s    .chkMBob
  683.     lea    .Bob(pc),a0
  684.     bra    WriteText
  685.  
  686. .chkMBob
  687.     cmp.w    #ID_MBOB,d0
  688.     bne.s    .chkGameScreen
  689.     lea    .MBob(pc),a0
  690.     bra    WriteText
  691.  
  692. .chkGameScreen
  693.     cmp.w    #ID_GAMESCREEN,d0
  694.     bne.s    .chkPicture
  695.     lea    .GameScreen(pc),a0
  696.     bra    WriteText
  697.  
  698. .chkPicture
  699.     cmp.w    #ID_PICTURE,d0
  700.     bne.s    .chkCardSet
  701.     lea    .Picture(pc),a0
  702.     bra    WriteText
  703.  
  704. .chkCardSet
  705.     cmp.w    #ID_CARDSET,d0
  706.     bne.s    .chkAnimation
  707.     lea    .CardSet(pc),a0
  708.     bra    WriteText
  709.  
  710. .chkAnimation
  711.     cmp.w    #ID_ANIM,d0
  712.     bne.s    .chkMovie
  713.     lea    .Animation(pc),a0
  714.     bra    WriteText
  715.  
  716. .chkMovie
  717.     cmp.w    #ID_MOVIE,d0
  718.     bne.s    .chkSound
  719.     lea    .Movie(pc),a0
  720.     bra    WriteText
  721.  
  722. .chkSound
  723.     cmp.w    #ID_SOUND,d0
  724.     bne.s    .chkInvalid
  725.     lea    .Sound(pc),a0
  726.     bra    WriteText
  727.  
  728. .chkInvalid
  729.     lea    .Invalid(pc),a0
  730.     bra    WriteText
  731.  
  732. .Bob        Text  "Bob",0
  733. .MBob        Text  "MBob",0
  734. .GameScreen    Text  "GameScreen",0
  735. .Picture    Text  "Picture",0
  736. .CardSet    Text  "CardSet",0
  737. .Animation    Text  "Animation",0
  738. .Movie        Text  "Movie",0
  739. .Sound        Text  "Sound",0
  740. .Invalid    Text  "Error - Invalid!",0
  741.  
  742.  
  743. PRINT_FreeStructure:
  744.     lea    TXT_FreeStructure(pc),a0
  745.     bsr    WriteFirst
  746.     move.l    a0,a1    ;a1 = Save structure.
  747.     lea    TXT_Structure(pc),a0    ;a0 = "Structure: $"
  748.     bsr    WriteText
  749.     move.l    a1,d0    ;d0 = Structure address.
  750.     bra    WriteHex
  751.  
  752. ;-----------------------------------------------------------------------------------;
  753. ;                                    FILE I/O
  754. ;-----------------------------------------------------------------------------------;
  755.  
  756. PRINT_SmartSave:
  757.     lea    TXT_SmartSave(pc),a0
  758.     bsr    WriteFirst
  759.     move.l    d0,d1    ;d1 = Save length.
  760.     bsr    WriteText    ;>> = Write out filename in a0.
  761.     lea    TXT_CSource(pc),a0    ;a0 = ", Source: $"
  762.     bsr    WriteText    ;>> = Write text.
  763.     move.l    a1,d0    ;d0 = Address of source.
  764.     bsr    WriteHex    ;>> = Write as hex.
  765.     lea    TXT_SourceLen(pc),a0    ;a0 = "Length: "
  766.     bsr    WriteText    ;>> = Write text.
  767.     move.l    d1,d0    ;d0 = Length.
  768.     bra    WriteDec    ;>> = Write as decimals.
  769.  
  770. PRINT_OpenFile:
  771.     move.l    a0,a1
  772.     lea    TXT_OpenFile(pc),a0
  773.     bsr    WriteFirst
  774.     move.l    a1,a0
  775.     bsr.s    WriteText    ;>> = Write out filename in a0.
  776.     lea    TXT_Flags(pc),a0    ;a0 = ", Flags: $"
  777.     bsr.s    WriteText
  778.     bra    WriteHex    ;>> = Write out hex flags in d0.
  779.  
  780. PRINT_CloseFile:
  781.     lea    TXT_CloseFile(pc),a0
  782.     bsr    WriteFirst
  783.     move.l    a0,a1    ;a1 = Save file structure.
  784.     lea    TXT_FileBase(pc),a0    ;a0 = "FileBase: $"
  785.     bsr.s    WriteText
  786.     move.l    a1,d0    ;d0 = Structure address.
  787.     bra    WriteHex
  788.  
  789. PRINT_SmartLoad:
  790.     move.l    a0,a3
  791.     lea    TXT_SmartLoad(pc),a0
  792.     bsr    WriteFirst
  793.     move.l    a3,a0
  794.     bsr    WriteText    ;>> = Write out filename.
  795.     lea    TXT_CDest(pc),a0    ;a0 = "Dest: $"
  796.     bsr    WriteText
  797.     cmp.l    #$00,a1    ;a1 = Destination given?
  798.     beq.s    .alloc    ;>> = No, allocate destination.
  799.     move.l    a1,d0    ;d0 = Destination address.
  800.     bra    WriteHex
  801. .alloc    lea    TXT_Allocated(pc),a0    ;a0 = "Allocated"
  802.     bra    WriteText
  803.  
  804. PRINT_QuickLoad:
  805.     move.l    a0,a3
  806.     lea    TXT_QuickLoad(pc),a0
  807.     bsr    WriteFirst
  808.     move.l    a3,a0
  809.     bsr    WriteText    ;>> = Write out filename.
  810.     lea    TXT_CDest(pc),a0    ;a0 = "Dest: $"
  811.     bsr    WriteText
  812.     cmp.l    #$00,a1    ;a1 = Destination given?
  813.     beq.s    .alloc    ;>> = No, allocate destination.
  814.     move.l    a1,d0    ;d0 = Destination address.
  815.     bra    WriteHex
  816. .alloc    lea    TXT_Allocated(pc),a0    ;a0 = "Allocated"
  817.     bra    WriteText
  818.  
  819. ;===================================================================================;
  820. ;                                NEW LINE
  821. ;===================================================================================;
  822.  
  823. NewLine:
  824.     MOVEM.L    D0-D7/A0-A6,-(SP)    ;SP = Save used registers.
  825.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  826.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  827.     move.l    #TXT_NewLine,d2    ;d2 = Start of string.
  828.     moveq    #1,d3    ;d3 = One character.
  829.     CALL    Write    ;>> = Write out the string.
  830.     MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  831.     rts
  832.  
  833. ;===================================================================================;
  834. ;                            FUNCTION STEPPER
  835. ;===================================================================================;
  836.  
  837. Stepper:
  838.     MOVEM.L    D0-D7/A0-A6,-(SP)    ;SP = Save used registers.
  839.     move.l    _GMSBase,a6    ;a6 = GMSBase
  840.     CALL    FindGMSTask    ;>> = Find this task.
  841.     tst.l    d0    ;d0 = Check if node exists.
  842.     beq.s    .done    ;>> = No, exit...
  843.     move.l    d0,a0    ;a0 = GMS task node.
  844.  
  845.     move.w    GT_DebugStep(a0),d4    ;d4 = Amount of spaces to step.
  846.     beq.s    .done    ;>> = No spaces, exit.
  847.     blt.s    .error    ;>> = Error!
  848. .loop    move.l    _DOSBase,a6    ;a6 = DOSBase.
  849.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  850.     move.l    #TXT_Space,d2    ;d2 = Start of string.
  851.     moveq    #1,d3    ;d3 = One character.
  852.     CALL    Write    ;>> = Write out the string.
  853.     subq.w    #1,d4    ;d4 = (AmtSpaces)-1
  854.     bgt.s    .loop    ;>> = Keep looping if more left.
  855. .done    MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  856.     rts
  857.  
  858. .error    move.l    _DOSBase,a6    ;a6 = DOSBase.
  859.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  860.     move.l    #XXX,d2    ;d2 = Start of string.
  861.     moveq    #1,d3    ;d3 = One character.
  862.     CALL    Write    ;>> = Write out the string.
  863.     MOVEM.L    (SP)+,D0-D7/A0-A6    ;SP = Return used registers.
  864.     rts
  865.  
  866. XXX    dc.b    "X",0
  867.  
  868. ;===================================================================================;
  869. ;                            OUTPUT Text TO OUR WINDOW
  870. ;===================================================================================;
  871. ;Internal: Writes a string of Text to our window.
  872. ;Requires: a0 = Text string.
  873. ;Returns:  Nothing.
  874.  
  875. MAXLETTERS =    23
  876.  
  877. WriteBold:
  878.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  879.     move.l    a0,a3    ;a3 = Save pointer to text to write.
  880.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  881.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  882.     move.l    #TXT_Bold,d2    ;d2 = Start of string.
  883.     moveq    #4,d3    ;d3 = (EndString)-StartString [Length]
  884.     CALL    Write    ;>> = Write out the string.
  885.     bra.s    WSkip
  886.  
  887. WriteWhite:
  888.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  889.     move.l    a0,a3    ;a3 = Save pointer to text to write.
  890.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  891.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  892.     move.l    #TXT_White,d2    ;d2 = Start of string.
  893.     moveq    #5,d3    ;d3 = (EndString)-StartString [Length]
  894.     CALL    Write    ;>> = Write out the string.
  895.     bra.s    WSkip    ;>> = Skip into routine.
  896.  
  897. WriteFirst:
  898.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  899.     move.l    a0,a3    ;a3 = Save pointer to text to write.
  900.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  901.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  902.     move.l    #TXT_Flat,d2    ;d2 = Start of string.
  903.     moveq    #4,d3    ;d3 = (EndString)-StartString [Length]
  904.     CALL    Write    ;>> = Write out the string.
  905.  
  906. WSkip:    move.l    _GMSBase,a6    ;a6 = GMSBase.
  907.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  908.     move.l    a3,d2    ;d2 = Start of string.
  909.     moveq    #-1,d3    ;d3 = -1 [length]
  910. .count    addq.l    #1,d3    ;d3 = ++1
  911.     tst.b    (a3)+    ;a3 = End of string?
  912.     bne.s    .count    ;>> = Keep looping.
  913.  
  914.     moveq    #MAXLETTERS,d5    ;d5 = MaxLetters
  915.     sub.w    d3,d5    ;d5 = (MaxLetters)-TextLength
  916.  
  917.     move.l    _GMSBase,a6
  918.     CALL    FindGMSTask
  919.     tst.l    d0
  920.     beq.s    .under
  921.     move.l    d0,a0
  922.     sub.w    GT_DebugStep(a0),d5    ;d5 = (MaxLetters-TextLength)-Stepped
  923.     bge.s    .under    ;>> = Under the maximum amount.
  924.     add.w    d5,d3    ;d3 = (Length)-Overflow
  925. .under    move.l    _DOSBase,a6    ;a6 = DOSBase.
  926.     CALL    Write    ;>> = Write out the string.
  927.  
  928. .spaces    subq.w    #1,d5
  929.     blt.s    .done
  930.     move.l    _conhandle,d1    ;d1 = Output.
  931.     move.l    #TXT_Space,d2    ;d2 = Start of text.
  932.     moveq    #1,d3    ;d3 = 1 character.
  933.     CALL    Write    ;>> = Write out the string.
  934.     bra.s    .spaces    ;>> = Loop until finished.
  935. .done    MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  936.     rts
  937.  
  938. ;-----------------------------------------------------------------------------------;
  939.  
  940. WriteText:
  941.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  942.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  943.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  944.     move.l    #TXT_Flat,d2    ;d2 = Start of string.
  945.     moveq    #4,d3    ;d3 = (EndString)-StartString [Length]
  946.     CALL    Write    ;>> = Write out the string.
  947.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  948.     bsr.s    WText
  949.     rts
  950.  
  951. WText:    MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  952.     move.l    _DOSBase,a6    ;a6 = DOSBase.
  953.     move.l    _conhandle,d1    ;d1 = Window to output Text.
  954.     move.l    a0,d2    ;d2 = Start of string.
  955. .count    tst.b    (a0)+    ;a0 = End of string?
  956.     bne.s    .count    ;>> = Keep looping.
  957.     subq.w    #1,a0    ;a0 = --1 [End of string]
  958.     move.l    a0,d3    ;d3 = End of string.
  959.     sub.l    d2,d3    ;d3 = (EndString)-StartString [Length]
  960.     CALL    Write    ;>> = Write out the string.
  961.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  962.     rts
  963.  
  964. ;===================================================================================;
  965. ;                      OUTPUT HEXADECIMAL Text TO OUR WINDOW
  966. ;===================================================================================;
  967. ;Internal: Outputs a longword value as hexidecimal Text.
  968. ;Requires: d0 = Value
  969. ;       d7 = AmtBytes (1-8)
  970. ;Returns:  Nothing.
  971.  
  972. WriteHex:
  973.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  974.     lea    .hex(pc),a0    ;a0 = Hex table.
  975.     lea    String(pc),a1    ;a1 = Text buffer.
  976.     moveq    #$00,d2
  977.     tst.l    d0
  978.     beq.s    .wzero
  979.     moveq    #8-1,d7    ;d7 = (AmtBytes)-1
  980. .loop2    rol.l    #4,d0    ;d0 = <<4 [rotate, last nibble first]
  981.     move.l    d0,d1    ;d1 = Current value.
  982.     and.l    #$0000000F,d1    ;d1 = (Value)&$F [nibble]
  983.     bne.s    .write
  984.     tst.w    d2
  985.     beq.s    .skip
  986. .write    move.b    (a0,d1.w),(a1)+    ;a1 = Write out the hex value.
  987.     moveq    #$01,d2
  988. .skip    dbra    d7,.loop2    ;d7 = --1 and loop.
  989.     move.w    #$2000,(a1)    ;a1 = Clear the final byte.
  990.     lea    String(pc),a0    ;a0 = Text buffer.
  991.     bsr    WriteText    ;>> = Write it out.
  992.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  993.     rts
  994.  
  995. .wzero    lea    .zero(pc),a0    ;a0 = "0"
  996.     bsr    WriteText    ;>> = Write it out.
  997.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  998.     rts
  999.  
  1000. .zero    Text    "0 ",0
  1001. .hex    Text    "0123456789ABCDEF"
  1002. String:    Text    "                ",0
  1003.  
  1004. ;===================================================================================;
  1005. ;                          WRITE DECIMAL NUMBER
  1006. ;===================================================================================;
  1007. ;Internal: Outputs a longword value as decimal Text.
  1008. ;Requires: d0 = Value
  1009. ;       d7 = AmtBytes (1-8) or -1/0.
  1010. ;Returns:  Nothing.
  1011.  
  1012. WriteDec:
  1013.     MOVEM.L    A0-A6/D0-D7,-(SP)    ;SP = Save used registers.
  1014.     moveq    #-1,d7
  1015.     move.l    _GMSBase,a6
  1016.     move.w    d7,d1
  1017.     lea    String(pc),a0
  1018.     CALL    WriteDec
  1019.     move.l    d0,a1
  1020.     move.w    #$2000,(a1)
  1021.     bsr    WriteText
  1022.     MOVEM.L    (SP)+,A0-A6/D0-D7    ;SP = Return used registers.
  1023.     rts
  1024.  
  1025. ;===================================================================================;
  1026. ;                             Text FOR PRINT ROUTINES
  1027. ;===================================================================================;
  1028.  
  1029. _GFXBase:  dc.l  0
  1030.  
  1031. TXT_RasterAddr:      WText " Rasterlist: $"
  1032. TXT_CSource:      WText ", Source: $"
  1033. TXT_CDest:      WText ", Dest: $"
  1034. TXT_SourceLen:      WText "Length: "
  1035. TXT_RestoreAddr:  WText "Restorelist: $"
  1036. TXT_AmtBuffers:      WText "AmtBuffers: "
  1037. TXT_AmtEntries:      WText ", AmtEntries: "
  1038. TXT_FileName:      WText "FileName: "
  1039. TXT_FileBase:      WText "FileBase: $"
  1040. TXT_Flags:      WText ", Flags: $"
  1041. TXT_Name:      WText "Name: "
  1042. TXT_Unknown:      WText "Unknown.  "
  1043. TXT_Unspecified:  WText "Unspecified.  "
  1044. TXT_Source:      WText "Source: $"
  1045. TXT_Allocated:      WText "Allocated.  "
  1046. TXT_Address:      WText "Address: $"
  1047. TXT_PictureAddr:  WText "Picture: $"
  1048. TXT_ScreenAddr:      WText "GameScreen: $"
  1049. TXT_BobAddr:      WText "Bob: $"
  1050. TXT_MBobAddr:      WText "MBob: $"
  1051. TXT_SoundAddr:      WText "Sound: $"
  1052. TXT_Size:      WText "Size: "
  1053. TXT_MemData:      WText "(Data)"
  1054. TXT_MemVideo:      WText "(Video)"
  1055. TXT_MemBlit:      WText "(Blit)"
  1056. TXT_MemSound:      WText "(Sound)"
  1057. TXT_ObjectBase:      WText "ObjectBase: $"
  1058. TXT_ObjectList:   WText "ObjectList: $"
  1059. TXT_Structure:      WText "Structure: $"
  1060. TXT_ID:          WText "ID: "
  1061. TXT_Task:      WText "Task: $"
  1062. TXT_Space:      WText " "
  1063. TXT_NewLine:      dc.b  10,0
  1064.  
  1065. TXT_Flat:      WText ""
  1066. TXT_Bold:      WText ""
  1067. TXT_White:      WText ""
  1068.  
  1069. GPINames:
  1070.     dc.l    .SCR_Name
  1071.     dc.l    .BLT_Name
  1072.     dc.l    .SND_Name
  1073.     dc.l    .NET_Name
  1074.     dc.l    .VEC_Name
  1075.     dc.l    .FBL_Name    ;Empty
  1076.     dc.l    .ANM_Name
  1077.     dc.l    .RKO_Name
  1078.     dc.l    .TXT_Name
  1079.     dc.l    .OBJ_Name
  1080.  
  1081. .SCR_Name    WText "Screens.GPI"
  1082. .BLT_Name    WText "Blitter.GPI"
  1083. .SND_Name    WText "Sound.GPI"
  1084. .NET_Name    WText "Network.GPI"
  1085. .VEC_Name    WText "Vectors.GPI"
  1086. .FBL_Name    WText "Fireball.GPI"
  1087. .ANM_Name    WText "Anim.GPI"
  1088. .RKO_Name    WText "Reko.GPI"
  1089. .TXT_Name    WText "Text.GPI"
  1090. .OBJ_Name    WText "Objects.GPI"
  1091.  
  1092. ;-----------------------------------------------------------------------------------;
  1093. ;                                    ERROR LIST
  1094. ;-----------------------------------------------------------------------------------;
  1095.  
  1096. ErrorList:
  1097.     dc.l    ERROR_OK
  1098.     dc.l    ERROR_NoMem
  1099.     dc.l    ERROR_NoPtr
  1100.     dc.l    ERROR_InUse
  1101.     dc.l    ERROR_Struct
  1102.     dc.l    ERROR_Failed
  1103.     dc.l    ERROR_File
  1104.     dc.l    ERROR_Data
  1105.     dc.l    ERROR_Search
  1106.     dc.l    ERROR_ScrType
  1107.     dc.l    ERROR_GPI
  1108.     dc.l    ERROR_RCommand
  1109.     dc.l    ERROR_RList
  1110.     dc.l    ERROR_NoRaster
  1111.     dc.l    ERROR_DiskFull
  1112.     dc.l    ERROR_FileMiss
  1113.     dc.l    ERROR_WrongVer
  1114.     dc.l    ERROR_Monitor
  1115.     dc.l    ERROR_Unpack
  1116.  
  1117. ERROR_OK:    WText "OK: No problem!"
  1118. ERROR_NoMem:    WText "NOMEM: Not enough memory available."
  1119. ERROR_NoPtr:    WText "NOPTR: A required address pointer is not present."
  1120. ERROR_InUse:    WText "INUSE: Previous allocations have not been freed."
  1121. ERROR_Struct:    WText "STRUCT: Structure version not supported or found."
  1122. ERROR_Failed:    WText "FAILED: General/Miscellaneous failure."
  1123. ERROR_File:    WText "FILE: File error, eg file not found, disk full etc."
  1124. ERROR_Data:    WText "DATA: There is an error in the given data."
  1125. ERROR_Search:    WText "SEARCH: An internal search was performed and it failed."
  1126. ERROR_ScrType:    WText "SCRTYPE: Screen Type not recognised."
  1127. ERROR_GPI:    WText "GPI: Trouble initialising a GPI."
  1128. ERROR_RCommand: WText "RASTCOMMAND: Invalid raster command detected."
  1129. ERROR_RList:    WText "RASTERLIST: Complete rasterlist failure."
  1130. ERROR_NoRaster: WText "NORASTER: Rasterlist missing from GS_Rasterlist."
  1131. ERROR_DiskFull: WText "DISKFULL: Disk full error."
  1132. ERROR_FileMiss: WText "FILEMISSING: File not found."
  1133. ERROR_WrongVer: WText "WRONGVER: Wrong version or version not supported."
  1134. ERROR_Monitor:  WText "MONITOR: Monitor driver not found or not supported."
  1135. ERROR_Unpack:   WText "UNPACK: Problem with unpacking of data."
  1136.  
  1137. ;-----------------------------------------------------------------------------------;
  1138. ;                                    DEBUG LIST
  1139. ;-----------------------------------------------------------------------------------;
  1140.  
  1141.     STRUCTURE    DataListEntry,0
  1142.     WORD    DL_State    ;On = 1 / Off = 0.
  1143.     APTR    DL_Print    ;Pointer to the function printer.
  1144.     LABEL    DL_SIZEOF
  1145.  
  1146.     MACRO    Entry
  1147.     dc.w    1    ;On = 1 / Off = 0.
  1148.     dc.l    PRINT_\1    ;Print function called by WriteBuffer.
  1149.     ENDM
  1150.  
  1151. _DebugList:
  1152.     Entry    Error
  1153.     Entry    Formatted
  1154.     Entry    Message
  1155.     Entry    AllocMemBlock
  1156.     Entry    FreeMemBlock
  1157.     Entry    AddScreen
  1158.     Entry    DeleteScreen
  1159.     Entry    InitGPI
  1160.     Entry    RemoveGPI
  1161.     Entry    AddInputHandler
  1162.     Entry    RemInputHandler
  1163.     Entry    AddInterrupt
  1164.     Entry    RemInterrupt
  1165.     Entry    SmartLoad
  1166.     Entry    QuickLoad
  1167.     Entry    SmartUnpack
  1168.     Entry    SmartSave
  1169.     Entry    SetUserPrefs
  1170.     Entry    LoadPic
  1171.     Entry    FreePic
  1172.     Entry    InitRasterlist
  1173.     Entry    AllocBlitter
  1174.     Entry    FreeBlitter
  1175.     Entry    InitBob
  1176.     Entry    FreeBob
  1177.     Entry    InitRestore
  1178.     Entry    FreeRestore
  1179.     Entry    AllocBlitMem
  1180.     Entry    AllocVideoMem
  1181.     Entry    AllocSoundMem
  1182.     Entry    AllocAudio
  1183.     Entry    FreeAudio
  1184.     Entry    ShowScreen
  1185.     Entry    HideScreen
  1186.     Entry    InitMap
  1187.     Entry    FreeMap
  1188.     Entry    InitSound
  1189.     Entry    FreeSound
  1190.     Entry    HideRasterlist
  1191.     Entry    ShowRasterlist
  1192.     Entry    FindGMSTask
  1193.     Entry    MoveToFront
  1194.     Entry    Switch
  1195.     Entry    UnpackPic
  1196.     Entry    GetPicInfo
  1197.     Entry    GMSOpened
  1198.     Entry    GMSClosed
  1199.     Entry    ResetRestore
  1200.     Entry    RemoveRasterlist
  1201.     Entry    InitCards
  1202.     Entry    FreeCards
  1203.     Entry    GetCardInfo
  1204.     Entry    GetBob
  1205.     Entry    GetPicture
  1206.     Entry    GetScreen
  1207.     Entry    GetStructure
  1208.     Entry    GetMBob
  1209.     Entry    GetSound
  1210.     Entry    SelfDestruct
  1211.     Entry    Armageddon
  1212.     Entry    FingerOfDeath
  1213.     Entry    InitDestruct
  1214.     Entry    BlankOn
  1215.     Entry    BlankOff
  1216.     Entry    LoadObjectFile
  1217.     Entry    FreeObjectFile
  1218.     Entry    GetObjectList
  1219.     Entry    GetObject
  1220.     Entry    OpenFile
  1221.     Entry    CloseFile
  1222.     Entry    FreeStructure
  1223.     Entry    MoveToBack
  1224.     Entry    TakeDisplay
  1225.     Entry    ReturnDisplay
  1226.     Entry    Awaken
  1227.  
  1228. ;---------------------------------------------------------------------------;
  1229.  
  1230. TXT_GMSOpened:        WText "GMS OPENED        "
  1231. TXT_GMSClosed:        Text "GMS CLOSED        ",10,0
  1232.  
  1233. TXT_ErrorCode:          WText "ErrorCode:"
  1234. TXT_Error:          WText "Error:"
  1235. TXT_Formatted:          WText "Message:"
  1236. TXT_Message:          WText "Message:"
  1237.  
  1238. TXT_AllocMemBlock:    WText "AllocMemBlock()"
  1239. TXT_FreeMemBlock:     WText "FreeMemBlock()"
  1240. TXT_AddScreen:          WText "AddScreen()"
  1241. TXT_DeleteScreen:     WText "DeleteScreen()"
  1242. TXT_InitGPI:          WText "InitGPI()"
  1243. TXT_RemoveGPI:          WText "RemoveGPI()"
  1244. TXT_AddInputHandler:  WText "AddInputHandler()"
  1245. TXT_RemInputHandler:  WText "RemInputHandler()"
  1246. TXT_AddInterrupt:     WText "AddInterrupt()"
  1247. TXT_RemInterrupt:     WText "RemInterrupt()"
  1248. TXT_SmartLoad:          WText "SmartLoad()"
  1249. TXT_QuickLoad:          WText "QuickLoad()"
  1250. TXT_SmartUnpack:      WText "SmartUnpack()"
  1251. TXT_SmartSave:          WText "SmartSave()"
  1252. TXT_SetUserPrefs:     WText "SetUserPrefs()"
  1253. TXT_LoadPic:          WText "LoadPic()"
  1254. TXT_FreePic:          WText "FreePic()"
  1255. TXT_InitRasterlist:   WText "InitRasterlist()"
  1256. TXT_AllocBlitter:     WText "AllocBlitter()"
  1257. TXT_FreeBlitter:      WText "FreeBlitter()"
  1258. TXT_InitBob:          WText "InitBob()"
  1259. TXT_FreeBob:          WText "FreeBob()"
  1260. TXT_InitRestore:      WText "InitRestore()"
  1261. TXT_FreeRestore:      WText "FreeRestore()"
  1262. TXT_AllocBlitMem:     WText "AllocBlitMem()"
  1263. TXT_AllocVideoMem:    WText "AllocVideoMem()"
  1264. TXT_AllocSoundMem:    WText "AllocSoundMem()"
  1265. TXT_AllocAudio:       WText "AllocAudio()"
  1266. TXT_FreeAudio:          WText "FreeAudio()"
  1267. TXT_ShowScreen:       WText "ShowScreen()"
  1268. TXT_HideScreen:       WText "HideScreen()"
  1269. TXT_InitMap:          WText "InitMap()"
  1270. TXT_FreeMap:          WText "FreeMap()"
  1271. TXT_InitSound:          WText "InitSound()"
  1272. TXT_FreeSound:          WText "FreeSound()"
  1273. TXT_HideRasterlist:   WText "HideRasterlist()"
  1274. TXT_ShowRasterlist:   WText "ShowRasterlist()"
  1275. TXT_FindGMSTask:      WText "FindGMSTask()"
  1276. TXT_MoveToFront:      WText "MoveToFront()"
  1277. TXT_Switch:           WText "Switch()"
  1278. TXT_UnpackPic:        WText "UnpackPic()"
  1279. TXT_GetPicInfo:          WText "GetPicInfo()"
  1280. TXT_ResetRestore:     WText "ResetRestore()"
  1281. TXT_RemoveRasterlist: WText "RemoveRasterlist()"
  1282. TXT_InitCards:          WText "InitCards()"
  1283. TXT_FreeCards:          WText "FreeCards()"
  1284. TXT_GetCardInfo:      WText "GetCardInfo()"
  1285. TXT_GetBob:           WText "GetBob()"
  1286. TXT_GetPicture:       WText "GetPicture()"
  1287. TXT_GetScreen:        WText "GetScreen()"
  1288. TXT_GetStructure:     WText "GetStructure()"
  1289. TXT_GetMBob:          WText "GetMBob()"
  1290. TXT_GetSound:         WText "GetSound()"
  1291. TXT_SelfDestruct:     WText "SelfDestruct()"
  1292. TXT_Armageddon:       WText "Armageddon()"
  1293. TXT_FingerOfDeath:    WText "FingerOfDeath()"
  1294. TXT_InitDestruct:     WText "InitDestruct()"
  1295. TXT_BlankOn:          WText "BlankOn()"
  1296. TXT_BlankOff:         WText "BlankOff()"
  1297. TXT_LoadObjectFile:   WText "LoadObjectFile()"
  1298. TXT_FreeObjectFile:   WText "FreeObjectFile()"
  1299. TXT_GetObjectList:    WText "GetObjectList()"
  1300. TXT_GetObject:        WText "GetObject()"
  1301. TXT_OpenFile:          WText "OpenFile()"
  1302. TXT_CloseFile:          WText "CloseFile()"
  1303. TXT_FreeStructure:    WText "FreeStructure()"
  1304. TXT_MoveToBack:       WText "MoveToBack()"
  1305. TXT_TakeDisplay:      WText "TakeDisplay()"
  1306. TXT_ReturnDisplay:    WText "ReturnDisplay()"
  1307. TXT_Awaken:          WText "Awaken()"
  1308.  
  1309.